/**
 * @file    jm_config.h
 * @brief   关节电机配置接口
 * @details This is the detail description.
 * @author  wang-haoyu
 * @date    2025年7月10日 (created)
 * @version 0.0.1
 * @par Copyright (C):
 *          All Rights Reserved.
 * @par Encoding:
 *          UTF-8
 * @par Description        :
 * 1. Hardware Descriptions:
 *      None.
 * 2. Program Architecture:
 *      None.
 * 3. File Usage:
 *      None.
 * 4. Limitations:
 *      None.
 * 5. Else:
 *      None.
 * @par Modification:
 * -# Date          : 2025年7月10日;
 * Revision         : 0.0.1;
 * Author           : wang-haoyu;
 * Contents         :
 */
 
/* =============================================================================
 *                                header files
 * ========================================================================== */
#ifndef __JM_CONFIG_H
#define __JM_CONFIG_H

#include <stdio.h>
#include <string.h>
#include "stdbool.h"
#include <rthw.h>
#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>
#include "damiao_drv.h"
#include "utils_timer.h"

/* =============================================================================
 *                              macros & constants
 * ========================================================================== */
#define MAX_JM_DRV_SLAVE_NODE   8

/*****达秒电机模式 start*******/
#define MIT_MODE_CODE           0X000	//MIT模式
#define POS_MODE_CODE           0X100	//位置速度模式
#define SPEED_MODE_CODE         0X200	//速度模式
#define FORCE_POS_MIX_MODE_CODE 0X300	//力位混控模式
/*****达秒电机模式 end*******/

#define JM_CTRL_MODE  FORCE_POS_MIX_MODE_CODE

/* =============================================================================
 *                          data structure definitions
 * ========================================================================== */
typedef enum
{
    MODEL_NONE = 0,
    DAMIAO_4310,
    DAMIAO_4340,

    MODEL_INVALID,
}joint_motor_drv_model_t;

//关节电机fifo函数结构体初始化配置
#define JM_FIFO_INITALIZER {    \
    efifo_creat,                \
    efifo_destroy,              \
    efifo_get_used,             \
    efifo_get_free,             \
    efifo_write,                \
    efifo_read,                 \
    efifo_pick,                 \
    efifo_cut,                  \
    efifo_clean,                \
}

//关节电机执行函数结构体初始化配置
#define JM_FRAME_INITALIZER {           \
    damiao_drv_error_code_analys,       \
    damiao_drv_set_enable_state,        \
    damiao_drv_set_enable_urgent_state, \
    damiao_drv_save_zero_point_state,   \
    damiao_drv_clear_error_state,       \
    damiao_drv_force_pos_ctrl_state,    \
}

/* =============================================================================
 *                         static variable definitions
 * ========================================================================== */

/* =============================================================================
 *                         static function definitions
 * ========================================================================== */

/* =============================================================================
 *                         global function definitions
 * ========================================================================== */

#endif
/*******************************************************************************
 *                                  EOF
 ******************************************************************************/